package com.le.tester.designmode.dependenceversino;

import com.le.tester.designmode.dependenceversino.course.JavaCourse;
import com.le.tester.designmode.dependenceversino.peopleentity.MyStudyCourse;

/**
 * createTime：2022/8/31 10:09
 * description：
 */
public class Tester {
    public static void main(String[] args) {
        //v1其他用户需要使用该三个方法，并不可以使用原有的类，这边不使用继承，会重写掉子类的方法
//        LStudyDemo study = new LStudyDemo();
//        study.studyJava();
//        study.studyFE();
//        study.studyPython();


        //v2面向抽象的话，具体的体现是在继承接口的实现上
        //MyStudyCourse studyCourse = new MyStudyCourse();
        //studyCourse.study(new JavaCourse());
        //用户My想学习某某课程，只要在此new一个课程即可，课程和学生分开，解耦合

        //v3,直接使用接口引用参数化,类似@Autowired注入,不建议使用构造器进行传参，对类的侵入性很强，并不利于复用
//        MyStudyCourse studyCourse = new MyStudyCourse(new JavaCourse());
//        studyCourse.study();

//V4使用set或者valueOf()来代替传参
        MyStudyCourse studyCourse = new MyStudyCourse();
        studyCourse.setStudyCourse(new JavaCourse());
        studyCourse.study();
    }
}
